#ifndef CLICK_IGMPROUTERSTATE_H
#define CLICK_IGMPROUTERSTATE_H
#include <click/config.h>
#include <click/vector.hh>
#include <netinet/in.h>
#include "membershipreportmessage.hh"
#include "igmpstate.hh"

CLICK_DECLS

/** \brief Router multicast state, expands IGMPState with group specific timers
 *
 */

class IGMPRouterState : public IGMPState {
    public:
        ///constructs a state with filter mode exclude and no excluded sources, which will accept any traffic
        IGMPRouterState (const in_addr& multicastAddress);

        IGMPRouterState (const in_addr& multicastAddress, const IGMPFilterMode& filterMode, const Vector<in_addr>&  sourceList);

        IGMPRouterState (const in_addr& multicastAddress, const IGMPFilterMode& filterMode, int numberOfSources, in_addr* sourceList);

        ///constructs a IGMPState from it's netword representation, an IGMPGroupRecord
        IGMPRouterState (const struct IGMPGroupRecord* groupRecord);
        
        virtual ~IGMPRouterState ();
        
};

CLICK_ENDDECLS

#endif //CLICK_IGMPROUTERSTATE_H
